package com.tree.backend.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tree.backend.entity.dto.UserDTO;
import com.tree.backend.entity.dto.UserQueryDTO;
import com.tree.backend.entity.pojo.User;
import com.tree.backend.entity.vo.LoginVO;
import com.tree.backend.entity.vo.UserInfoVO;
import com.tree.backend.entity.vo.UserListVO;
import com.tree.backend.entity.vo.UserStatsVO;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 *  用户服务接口
 * </p>
 *
 * @author tree
 * @since 2025-11-04
 */
public interface IUserService extends IService<User> {
    
    /**
     * 用户登录
     * @param username 用户名
     * @param password 密码
     * @return 登录结果
     */
    LoginVO login(String username, String password);
    
    /**
     * 获取用户信息
     * @param username 用户名
     * @return 用户信息
     */
    UserInfoVO getUserInfo(String username);
    
    /**
     * 用户登出
     */
    void logout();
    
    /**
     * 获取用户统计信息
     * @return 用户统计信息
     */
    UserStatsVO getUserStats();
    
    /**
     * 获取用户列表
     * @param queryDTO 查询参数
     * @return 用户列表
     */
    Page<UserListVO> getUserList(UserQueryDTO queryDTO);
    
    /**
     * 新增用户
     * @param userDTO 用户数据
     * @return 是否成功
     */
    boolean addUser(UserDTO userDTO);
    
    /**
     * 更新用户信息
     * @param userId 用户ID
     * @param userDTO 用户数据
     * @return 是否成功
     */
    boolean updateUser(Long userId, UserDTO userDTO);
    
    /**
     * 删除用户
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean deleteUser(Long userId);
}
